package com.多线程.Timer;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Timer定时器的了解和使用
 * 缺点：Timer是单线程，处理多个任务会有延时（当一个时间有很多任务要执行，但是只有一个线程在执行，所以其他任务就要等待）
 *要是某个任务导致线程死掉，那么会影响后续任务的执行
 */

public class TimeDemo1 {
    public static void main(String[] args) {
         //1.创建Timer定时器
        Timer timer=new Timer();//定时器本身就是一个单线程

        //2.调用方法，执行定时任务
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"执行了一次");
                try {
                    Thread.sleep(5000);
                    //要是第一个任务睡眠了5秒，此时第二个任务就得等待五秒才会执行，执行以后本来每隔一秒又会执行
                    //但是任务一睡眠了五秒，任务二只能延迟，因为Timer是单线程的
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        },3000,1000);//这里的时间都是以毫秒为单位
        //程序三秒后打印信息，然后每个一秒打印一次


        //当TImer定时器处理多个任务时
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"执行了一次");
            }
        },3000,1000);//这里的时间都是以毫秒为单位
    }
}
